package com.tantan.client;

import com.tantan.model.User;
import com.tantan.model.UserMessage;

import java.io.IOException;

import static com.tantan.client.ClientScanner.gteScanner;

/**
 * 自定义类实现管理员系统的学员管理模块
 */
public class StudentManagement {

    /**
     * 为了可以使用输入输出流，采用合成复用原则实现
     */
    private ClientInitClose cic ;

    public StudentManagement(ClientInitClose cic) {
        this.cic = cic;
    }

    /**
     * 自定义学生类集合记录所有学员对象
     */
//    List<User> list = new LinkedList<>();

    /**
     * 自定义成员方法实现学员管理模块界面的绘制
     */
    public void studentManagementPage() throws IOException, ClassNotFoundException {
        while (true){
            System.out.println("             学员管理界面 ");
            System.out.println("----------------------------------------");
            System.out.println("     [1] 增加学员       [2] 删除学员");
            System.out.println("     [3] 修改学员       [4] 查找学员");
            System.out.println("     [5] 退出界面");
            System.out.println("---------------------------------------");
            System.out.println("请输入要进行的业务编号：");
            int choose = ClientScanner.gteScanner().nextInt();
            switch (choose){
                case 1:
                    increaseStudents();
                    break;
                case 2:
                    deleteStudents();
                    break;
                case 3:
                    changeStudents();
                    break;
                case 4:
                    findStudents();
                    break;
                case 5:
                    System.out.println("正在退出学员管理界面...");
                    return;
                default:
                    System.out.println("输入错误，请重新选择！");
            }
        }
    }

    /**
     * 自定义成员方法实现增加学员
     */
    private void increaseStudents() throws IOException, ClassNotFoundException {
        System.out.println("请输入新增学员的账户信息（六位）：");
        String userName = gteScanner().next();
        System.out.println("请输入学员的密码信息（六位数字）：");
        String password = gteScanner().next();
        UserMessage tum = new UserMessage("increaseStudents",new User(userName,password));
        //将此信息发送至服务器端
        cic.getOos().writeObject(tum);
        System.out.println("客户端发送要删除的学员账户信息成功！");
        //接收服务器的处理结果并给出提示
        tum = (UserMessage) cic.getOis().readObject();
        if("success".equals(tum.getType())){
            System.out.println("增加学员成功！");
        }else{
            System.out.println("增加学员失败！");
        }
    }

    /**
     * 自定义成员方法实现删除学员
     */
    private void deleteStudents() throws IOException, ClassNotFoundException {
        System.out.println("请输入学员的账户信息（六位）：");
        String userName = gteScanner().next();
        System.out.println("请输入学员的密码信息（六位数字）：");
        String password = gteScanner().next();
        UserMessage tum = new UserMessage("deleteStudents",new User(userName,password));
        //将此信息发送至服务器端
        cic.getOos().writeObject(tum);
        System.out.println("客户端发送要删除的学员账户信息成功！");
        //接收服务器的处理结果并给出提示
        tum = (UserMessage) cic.getOis().readObject();
        if("success".equals(tum.getType())){
            System.out.println("删除学员成功！");
        }else{
            System.out.println("删除失败！");
        }
    }

    /**
     * 自定义成员方法实现修改学员密码信息
     */
    private void changeStudents() throws IOException, ClassNotFoundException {
        System.out.println("请输入学员的账户信息（六位）：");
        String userName = gteScanner().next();
        System.out.println("请输入修改后的学员密码信息（六位数字）：");
        String password = gteScanner().next();
        UserMessage tum = new UserMessage("changeStudents",new User(userName,password));
        //将此信息发送至服务器端
        cic.getOos().writeObject(tum);
        System.out.println("客户端发送要修改的学员账户信息成功！");
        //接收服务器的处理结果并给出提示
        tum = (UserMessage) cic.getOis().readObject();
        if("success".equals(tum.getType())){
            System.out.println("修改学员信息成功！");
        }else{
            System.out.println("修改学员信息失败！");
        }
    }

    /**
     * 自定义成员方法实现查找学员
     */
    private void findStudents() throws IOException {
        System.out.println("请输入学员的账户信息（六位）：");
        String userName = gteScanner().next();
        System.out.println("请输入学员的密码信息（六位数字）：");
        String password = gteScanner().next();
        UserMessage tum = new UserMessage("findStudents",new User(userName,password));
        //将此信息发送至服务器端
        cic.getOos().writeObject(tum);
        System.out.println("客户端发送要修改的学员账户信息成功！");
    }
}
